package com.whfc.ms.api.mach.service;

import com.whfc.common.result.ListData;
import com.whfc.common.result.PageData;
import com.whfc.entity.dto.OssPathDTO;
import com.whfc.mach.dto.obd.MaintainNumStatDTO;
import com.whfc.mach.dto.obd.MaintainRuleDTO;
import com.whfc.mach.dto.obd.ObdMaintainDTO;
import com.whfc.mach.param.MaintainHandleParam;
import com.whfc.mach.param.MaintainRuleSetParam;

import java.util.Date;

/**
 * @author sun_guodong
 * @description 设备保养
 * @date 2021-03-05
 */
public interface MsObdMaintainService {
    /**
     * 设备保养列表
     *
     * @param deptId
     * @param pageNum
     * @param pageSize
     * @param state
     * @param startTime
     * @param endTime
     * @return
     */
    PageData<ObdMaintainDTO> list(Integer deptId, Integer pageNum, Integer pageSize, Integer state, Date startTime, Date endTime);

    /**
     * 设备保养数据统计
     *
     * @param deptId
     * @return
     */
    MaintainNumStatDTO numStat(Integer deptId);

    /**
     * 设备保养详情
     *
     * @param maintainId
     * @return
     */
    ObdMaintainDTO detail(Integer maintainId);

    /**
     * 处理设备保养
     *
     * @param param
     */
    void handle(MaintainHandleParam param);

    /**
     * 设备保养触发条件设置
     *
     * @param param
     */
    void ruleSet(MaintainRuleSetParam param);

    /**
     * 设备保养触发条件详情
     *
     * @param deptId
     * @return
     */
    ListData<MaintainRuleDTO> ruleDetail(Integer deptId);

    /**
     * 查找设备保养信息
     *
     * @param machId
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageData<ObdMaintainDTO> getMaintainData(Integer machId, Integer pageNum, Integer pageSize);

    /**
     * 导出设备保养信息
     *
     * @param machId
     * @return
     */
    OssPathDTO export(Integer machId);

    /**
     * 获取设备需要保养的信息
     *
     * @param machId
     * @return
     */
    ObdMaintainDTO getNeedMaintainInfo(Integer machId);
}
